﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Common.DataAccess;
using CBE.Model;
using Common.DataAccess;
using Microsoft.Data.Extensions;

namespace CBE.DataAccess
{
    public class ReporteVentasDelMesDataAccess : GenericReportDataAccess<ReporteVentasDelMesView, ReporteVentasDelMesCriteria, CBEEntities>
    {
        public override List<ReporteVentasDelMesView> ReadViewsByCriteria(ReporteVentasDelMesCriteria criteriaEntity)
        {
            var listOfVentas = ObjectContext.CreateStoreCommand("ReporteVentas_PorRangoFechas", System.Data.CommandType.StoredProcedure, 
                new System.Data.SqlClient.SqlParameter("@pFechaDesde", criteriaEntity.FechaDesde),
                new System.Data.SqlClient.SqlParameter("@pFechaHasta", criteriaEntity.FechaHasta))
                .Materialize<ReporteVentasDelMesView>(r => new ReporteVentasDelMesView
                {
                    ID = r.Field<Guid>("ID"),
                    NombreApellidoCliente = r.Field<String>("NombreApellidoCliente"),
                    FechaVenta = r.Field<DateTime>("FechaVenta"),
                    Servicios = r.Field<String>("Servicios"),
                    FormaPago = r.Field<String>("FormaPago"),
                    Importe = r.Field<Decimal>("Importe"),
                    ImporteServicios = r.Field<Decimal>("ImporteServicios"),
                    ImporteBonificado = r.Field<Decimal>("ImporteBonificado"),
                    ImporteProductos = r.Field<Decimal>("ImporteProductos"),
                    TieneTurnoAsociado = r.Field<String>("TieneTurnoAsociado"),
                });

            return listOfVentas.ToList();
        }
    }
}
